﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Sistema_Totem.Clases;
using Sistema_Totem.Logica.Comandos;
using Sistema_Totem.Logica.Fabricas;
using Sistema_Totem.Logica.Comandos.ComadoProyecto;
using Sistema_Totem.Presentacion.Contrato.Proyectos;

namespace Sistema_Totem.Presentacion.Presentador.Proyectos
{
    public class PresentadorModificarProyectoGerente
    {
        #region Atributos

        private IContratoModificarProyectoGerente _vista;
        private Proyecto _proyecto;
        private List<Entidad> _clientes = new List<Entidad>();
        private List<Entidad> _involucradosProyecto = new List<Entidad>();
        private List<Entidad> _involucradosSistema = new List<Entidad>();
        private List<Entidad> _clientesExternos = new List<Entidad>();
        private Cliente _miCliente;

        #endregion

        #region Contructores

        public PresentadorModificarProyectoGerente(IContratoModificarProyectoGerente _vista)
        {
            this._vista = _vista;
        }

        #endregion

        #region Metodos        

        public void Pintar()
        {
            _proyecto = (_vista.Sesion["proyecto"] as Proyecto);
            _vista.CodigoProyecto.Text = _proyecto.Codigo;
            _vista.LabelNombreProyecto.Text = _proyecto.Nombre;
            PintarCliente();
            PintarComboClientes();
            _vista.LabelArea.Text = _proyecto.Area;
            _vista.DescripcionProyecto.Text = _proyecto.Descripcion;
            PintarListadoInvolcradosSistema();
            PintarListadoInvolcradosProyecto();
            // aqui van todas las plantilla ->
            _vista.EstadoProyecto.Text = _proyecto.Estado;
            _vista.LabelFechaIni.Text = _proyecto.FechaIni.ToString();
            _vista.LabelFechaFin.Text = _proyecto.FechaFin.ToString();
            // aqui va las fechas de los calendarios
        }

        private void PintarCliente()
        {
            _miCliente = FabricaComando.CrearComandoConsultarCliente(_proyecto.IdProyecto).Ejecutar() as Cliente;
            _vista.NombreCliente.Text = _miCliente.Nombre;
        }

        private void PintarComboClientes()
        {
            _vista.Clientes.Items.Add("- Indique opcion: ");
            _clientes = FabricaComando.CrearComandoConsultarClientesNoProyecto(_proyecto.IdProyecto).Ejecutar();

            foreach (Entidad _cliente in _clientes)
                _vista.Clientes.Items.Add((_cliente as Cliente).Nombre + ":" + (_cliente as Cliente).Rif);
        }

        private void PintarListadoInvolcradosProyecto()
        {
            _involucradosProyecto = FabricaComando.CrearComandoConsultarInvolucradosProyecto(_proyecto.IdProyecto).Ejecutar();

            foreach (Entidad _involucrado in _involucradosProyecto)
                _vista.InvolucradosProyecto.Items.Add((_involucrado as Involucrado).Nombre);
        }

        private void PintarListadoInvolcradosSistema()
        {
            _involucradosSistema = FabricaComando.CrearComandoConsultarInvolucradosNoProyecto(_proyecto.IdProyecto).Ejecutar();

            foreach (Entidad _involucrado in _involucradosSistema)
                _vista.InvolucradosSistema.Items.Add((_involucrado as Involucrado).Nombre);
        }

        public void AgregarModificacionProyecto()
        {
            if (ValidarFechasProyecto())
            {                
                if (_vista.NombreProyecto.Text != "")
                    _proyecto.Nombre = _vista.NombreProyecto.Text;
                if (_vista.AreaProyecto.Text != "") 
                    _proyecto.Area = _vista.AreaProyecto.Text;
                if (_vista.EstadoProyecto.SelectedIndex != 0) 
                    _proyecto.Estado = _vista.EstadoProyecto.SelectedValue.ToString();
                if (_vista.CalendarioFechaInicio.SelectedDate != null)
                    _proyecto.FechaIni = _vista.CalendarioFechaInicio.SelectedDate;
                if (_vista.CalendarioFechaFin.SelectedDate != null)
                    _proyecto.FechaFin = _vista.CalendarioFechaFin.SelectedDate;
                _proyecto.Descripcion = _vista.DescripcionProyecto.Text;

                FabricaComando.CrearComandoModificarProyecto(_proyecto).Ejecutar();
                    
                   
            }
        }

        private bool ValidarFechasProyecto()
        {
            if (_vista.CalendarioFechaInicio.SelectedDate != null && _vista.CalendarioFechaFin != null)
            {
                if (_vista.CalendarioFechaInicio.SelectedDate >= _vista.CalendarioFechaFin.SelectedDate)
                    return false;
            }
            return true;
        }

        #endregion
    }
}